Die Antworten dieser Frage sind eine Gemeinschaftsanstrengung. Bearbeiten Sie vorhandene Antworten, um diesen Beitrag zu verbessern. Derzeit werden keine neuen Antworten oder Interaktionen akzeptiert. Wie kann ich den Benutzer mit jQuery oder reinem JavaScript von einer Seite auf eine andere umleiten?
2020-12-07 22:00:12
1 2 Nächster Eine nicht einfach umleiten jQuery jQuery ist nicht erforderlich, und window.location.replace (...) simuliert am besten eine HTTP-Umleitung. window.location.replace (...) ist besser als die Verwendung von window.location.href, da replace () die Ursprungsseite nicht im Sitzungsverlauf behält, was bedeutet, dass der Benutzer nicht in einem nie endenden Back- stecken bleibt. Knopf Fiasko. Wenn Sie jemanden simulieren möchten, der auf einen Link klickt, verwenden Sie location.href Wenn Sie eine HTTP-Umleitung simulieren möchten, verwenden Sie location.replace Zum Beispiel: // ähnliches Verhalten wie eine HTTP-Umleitung window.location.replace ("http://stackoverflow.com"); // ähnliches Verhalten wie das Klicken auf einen Link window.location.href = "http://stackoverflow.com"; | WARNUNG: Diese Antwort wurde lediglich als mögliche Lösung angegeben. Es ist offensichtlich nicht die beste Lösung, da es jQuery erfordert. Bevorzugen Sie stattdessen die reine JavaScript-Lösung. $ (Speicherort) .attr ('href', 'http://stackoverflow.com') | Standard "Vanille" JavaScript-Methode zum Umleiten einer Seite window.location.href = 'newPage.html'; Oder einfacher: (da das Fenster global ist) location.href = 'newPage.html'; Wenn Sie hier sind, weil Sie HTTP_REFERER bei der Umleitung verlieren, lesen Sie weiter: (Andernfalls ignorieren Sie diesen letzten Teil) Der folgende Abschnitt richtet sich an Benutzer, die HTTP_REFERER als eine von vielen Sicherheitsmaßnahmen verwenden (obwohl dies keine hervorragende Schutzmaßnahme ist). Wenn Sie Internet Explorer 8 oder niedriger verwenden, gehen diese Variablen verloren, wenn Sie eine JavaScript-Seitenumleitung (location.href usw.) verwenden. Im Folgenden werden wir eine Alternative für IE8 und niedriger implementieren, damit wir HTTP_REFERER nicht verlieren. Ansonsten können Sie fast immer einfach window.location.href verwenden. Durch Testen gegen HTTP_REFERER (Einfügen von URLs, Sitzung usw.) kann festgestellt werden, ob eine Anforderung legitim ist. (Hinweis: Es gibt auch Möglichkeiten, diese Verweise zu umgehen / zu fälschen, wie durch den Link von droop in den Kommentaren angegeben.) Einfache browserübergreifende Testlösung (Fallback auf window.location.href für Internet Explorer 9+ und alle anderen Browser) Verwendung: redirect ('anotherpage.aspx'); Funktionsumleitung (URL) { var ua = navigator.userAgent.toLowerCase (), isIE = ua.indexOf ('msie')! == -1, version = parseInt (ua (4, 2), 10); // Internet Explorer 8 und niedriger if (isIE && version <9) { var link = document.createElement ('a'); link.href = url; document.body.appendChild (Link); link.click (); }} // Alle anderen Browser können die Standarddatei window.location.href verwenden (sie verlieren HTTP_REFERER nicht wie Internet Explorer 8 und niedriger). sonst { window.location.href = url; }} }} | Es gibt viele Möglichkeiten, dies zu tun. // window.location window.location.replace ( 'http://www.example.com') window.location.assign ('http://www.example.com') window.location.href = 'http://www.example.com' document.location.href = '/ path' // window.history window.history.back () window.history.go (-1) // window.navigate; NUR für alte Versionen von Internet Explorer window.navigate ( 'top.jsp') // Wahrscheinlich kein Bueno self.location = 'http://www.example.com'; top.location = 'http://www.example.com'; // jQuery $ (Location) .attr ( 'href', 'http: //www.example.com') $ (Fenster) .attr ( 'Standort', 'http: //www.example.com') $ (Location) .prop ( 'href', 'http://www.example.com') | Dies funktioniert für jeden Browser: window.location.href = 'your_url'; | Es wäre hilfreich, wenn Sie in dem, was Sie versuchen, etwas aussagekräftiger wären. Wenn Sie versuchen, ausgelagerte Daten zu generieren, gibt es einige Optionen, wie Sie dies tun. Sie können für jede Seite, zu der Sie direkt gelangen möchten, separate Links erstellen. 1 2 3 ... Beachten Sie, dass die aktuelle Seite im Beispiel behandelt wird anders im Code und mit CSS. Wenn Sie möchten, dass die ausgelagerten Daten über AJAX geändert werden, kommt jQuery hier ins Spiel. Sie fügen jedem der Ankertags, die einer anderen Seite entsprechen, einen Klick-Handler hinzu. Dieser Klick-Handler würde einen jQuery-Code aufrufen, der die nächste Seite über AJAX abruft und die Tabelle mit den neuen Daten aktualisiert. Im folgenden Beispiel wird davon ausgegangen, dass Sie über einen Webdienst verfügen, der die neuen Seitendaten zurückgibt. $ (Dokument) .ready (Funktion () { $ ('a.pager-link'). click (function () { var page = $ (this) .attr ('href'). split (/ \? /) [1]; $ .ajax ({ Typ: 'POST', URL: '/ Pfad zum Service', Daten: Seite, Erfolg: Funktion (Inhalt) { $ ('# myTable'). html (Inhalt); // ersetzen }} }); falsch zurückgeben; // um den Link zu stoppen }); }); | Ich denke auch, dass location.replace (URL) der beste Weg ist, aber wenn Sie die Suchmaschinen über Ihre Umleitung informieren möchten (sie analysieren keinen JavaScript-Code, um die Umleitung zu sehen), sollten Sie das Meta rel = "canonical" hinzufügen Tag auf Ihre Website. Das Hinzufügen eines Noscript-Abschnitts mit einem HTML-Aktualisierungs-Meta-Tag ist ebenfalls eine gute Lösung. Ich empfehle Ihnen, dieses JavaScript-Umleitungstool zu verwendenUmleitungen erstellen. Es hat auch Internet Explorer-Unterstützung, um den HTTP-Referrer zu übergeben. Beispielcode ohne Verzögerung sieht folgendermaßen aus: